package com.andy.blog.admin.service;

import com.andy.blog.admin.dto.SysUserDTO;
import com.andy.blog.common.page.PageUtilsDTO;
import com.andy.blog.dal.domain.SysUserDO;
import com.andy.blog.dal.vo.SysUserVO;
import org.springframework.web.multipart.MultipartFile;

import java.util.List;
import java.util.Map;

/**
 * Created by andy on 2023/4/7 15:53
 */
public interface SysUserBusService {


    /**
     * 根据条件分页查询用户列表
     *
     * @param user 用户信息
     * @return 用户信息集合信息
     */
    List<SysUserDTO> selectUserList(SysUserVO sysUserVO);

    /**
     * 通过用户ID查询用户
     */
    SysUserDO selectUserById(Long userId);

    /**
     * 个人信息
     */
    Map<String, Object> profile();

    /**
     * 更新个人信息
     */
    void updateProfile(SysUserVO sysUserVO);

    /**
     * 重置密码
     */
    void updatePwd(String oldPassword, String newPassword);

    /**
     * 头像上传
     */
    Map<String, String> avatar(MultipartFile file);

    /**
     * 分页查询
     */
    PageUtilsDTO<SysUserDTO> selectListByPage(SysUserVO sysUserVO);

    /**
     * 获取详情信息
     */
    Map<String, Object> getInfo(Long userId);

    /**
     * 获取用户信息
     */
    SysUserDTO getUserInfo();

    /**
     * 新增用户
     */
    void add(SysUserVO sysUserVO);

    /**
     * 更新用户状态
     */
    void changeStatus(SysUserVO sysUserVO);

    /**
     * 修改用户
     */
    void edit(SysUserVO sysUserVO);

    /**
     * 重置密码
     */
    void resetPwd(SysUserVO sysUserVO);

    /**
     * 删除
     */
    void remove(Long userId);

    /**
     * 导入用户
     */
    String importUser(MultipartFile file, boolean updateSupport) throws Exception;

    /**
     * 根据用户编号获取授权角色
     */
    Map<String, Object> authRole(Long userId);
}
